﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>Pause - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The Pause function pauses the script's current thread." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>Pause</h1>

<p>暂停脚本的<a href="../misc/Threads.htm">当前线程</a>.</p>

<pre class="Syntax">
<span class="func">#p</span>::Pause <em>; 按一次 Win+P 会暂停脚本. 再按一次则取消暂停.</em>
<span class="func">Pause</span> <span class="optional">OnOffToggle, OperateOnUnderlyingThread</span>
</pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>OnOffToggle</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a>或<a href="../Concepts.htm#numbers">整数</a></p>
    <p>如果为空或省略, 则它默认为 Toggle. 否则, 请指定下列单词的其中一个:</p>
    <p><strong>Toggle</strong> 或 -1: 暂停<a href="../misc/Threads.htm">当前线程</a>, 但是当它下面的线程是暂停的时, 底层线程被取消暂停.</p>
    <p><strong>On</strong> 或 1 (<a href="../Variables.htm#True">true</a>): 暂停当前线程.</p>
    <p><strong>Off</strong> 或 0 (<a href="../Variables.htm#False">false</a>): 如果在当前线程下的线程已经处于暂停状态, 则把它恢复到未暂停状态. 否则, 此函数没有效果.</p>
  </dd>

  <dt>OperateOnUnderlyingThread</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#boolean">整数(布尔值)</a></p>
    <p>对于 <code>Pause "Off"</code> 会忽略此参数, 因为它总是对底层线程进行操作. 对于其他情况, 除非 Pause 为 On 状态(包含使用 Toggle 开启的情况), 否则参数将被忽略.</p>
    <p>请指定下面的其中一个数字:</p>
    <p><strong>0</strong>(或省略): 函数会暂停当前线程; 即正在运行 Pause 函数的这个线程.</p>
    <p><strong>1</strong>: 函数将当前线程下面的线程标记为暂停, 以便当它恢复运行时, 它将完成正在运行的函数(如果有的话), 然后进入暂停状态. 如果当前线程下面没有线程, 则暂停脚本自身, 这样阻止<a href="SetTimer.htm">计时器</a>的运行(这样的效果和当脚本没有线程时使用了菜单项 &quot;Pause Script&quot; 一样).</p>
    <p class="note"><strong>注意</strong>: <a href="../Variables.htm#IsPaused">A_IsPaused</a> 包含了底层线程的暂停状态.</p>
  </dd>

</dl>

<h2 id="Remarks">备注</h2>
<p>默认情况下, 脚本也可以通过它的<a href="../Program.htm#tray-icon">托盘图标</a>或<a href="../Program.htm#main-window">主窗口</a>来暂停.</p>
<p>与 <a href="Suspend.htm">Suspend</a> 禁用<a href="../Hotkeys.htm">热键</a>和<a href="../Hotstrings.htm">热字串</a>不同, 开启暂停状态会冻结<a href="../misc/Threads.htm">当前线程</a>. 副作用是, 在它下面的任何被中断线程也将处于睡眠状态.</p>
<p>暂停任意线程后, <a href="SetTimer.htm">计时器</a>不会运行. 与之相比, 显式启动的线程(如 <a href="../Hotkeys.htm">热键</a>和<a href="../objects/Menu.htm">菜单项</a>) 仍然可以运行; 但当它们的<a href="../misc/Threads.htm">线程</a>结束时, 底层线程仍会被暂停. 换句话说, 每个线程都能独立于其他线程被暂停.</p>
<p>每当脚本的<a href="../misc/Threads.htm">当前线程</a>处于暂停状态时, 托盘图标的颜色会从绿色变成红色. 可以通过冻结图标阻止这个图标颜色的改变, 这是通过指定 Menu 函数的最后一个参数为 1 来实现的. 例如:</p>
  <pre><a href="TraySetIcon.htm">TraySetIcon</a> "C:\My Icon.ico", , 1</pre>
<p>要禁用<a href="SetTimer.htm">计时器</a> 而不暂停脚本, 请使用 <a href="Thread.htm">Thread "NoTimers"</a>.</p>
<p>当脚本显示任意类型的<a href="../objects/Menu.htm">菜单</a>(托盘菜单, 菜单栏, GUI 上下文菜单, 等) 时, 脚本总是处于停顿状态(虽然不是正式地暂停).</p>

<h2 id="Related">相关</h2>
<p><a href="Suspend.htm">Suspend</a>, <a href="../objects/Menu.htm">Menu object</a>, <a href="ExitApp.htm">ExitApp</a>, <a href="../misc/Threads.htm">Threads</a>, <a href="SetTimer.htm">SetTimer</a></p>
<h2 id="Examples">示例</h2>
<div class="ex" id="ExHotkey">
<p><a href="#ExHotkey">#1</a></p>
<pre>Pause::Pause  <em>; 设置 &quot;pause&quot; 键为切换暂停功能的热键...</em>
#p::Pause  <em>; ... 或者设置 Win+p 或其他热键.</em></pre>
</div>

<div class="ex" id="ExPostMessage">
<p><a href="#ExPostMessage">#2</a>: 发送 Pause 函数到另一个脚本.</p>
<pre>DetectHiddenWindows True
WM_COMMAND := 0x111
ID_FILE_PAUSE := 65403
<a href="PostMessage.htm">PostMessage</a> WM_COMMAND, ID_FILE_PAUSE,,, "C:\YourScript.ahk ahk_class AutoHotkey"</pre>
</div>

</body>
</html>